# 2024.12.23力扣网刷题
# 仅含置位位的最小整数——位运算、数学——简单
# 给你一个正整数 n。
# 返回 大于等于 n 且二进制表示仅包含 置位 位的 最小 整数 x 。
# 置位 位指的是二进制表示中值为 1 的位。
# 示例 1：
# 输入： n = 5
# 输出： 7
# 解释：
# 7 的二进制表示是 "111"。
# 示例 2：
# 输入： n = 10
# 输出： 15
# 解释：
# 15 的二进制表示是 "1111"。
# 示例 3：
# 输入： n = 3
# 输出： 3
# 解释：
# 3 的二进制表示是 "11"。
# 提示：
# 1 <= n <= 1000

class Solution(object):
    def smallestNumber(self, n):
        """
        :type n: int
        :rtype: int
        """
        ans = 0
        i = 0
        while n:
            ans += 2 ** i
            n >>= 1
            i += 1
        return ans
